package com.zmn.plat.business.interfaces.brand.ratio;

import java.util.List;

import org.springframework.web.bind.annotation.RequestBody;

import com.zmn.plat.common.dto.brand.factor.BrandFactorDRO;
import com.zmn.plat.common.exception.PlatException;
import com.zmn.plat.model.entity.brand.BrandRatioQuery;
import com.zmn.plat.model.vo.brand.BrandRatioModifyVo;
import com.zmn.plat.model.vo.brand.BrandRatioVo;
import com.zmn.plat.model.vo.brand.factor.BrandFactorCategoryRatioVo;

/**
 * 描述:BrandRatioBService
 *
 * @author linfeng
 * @since: 2019/11/23 15:56
 */
public interface BrandRatioBService {

    /**
     * 描述: 获取品牌系数
     *
     * @param brandId
     *            品牌id
     * @param showProductId
     *            产品id
     * @param type
     *            1.保外，2.保内
     * @author tanbiao
     * @see BrandRatioBService#getByBrandIdAndProductIdAndBizTypeAndPriceType(java.lang.Integer, java.lang.Integer, java.lang.Integer,
     *      java.lang.Integer)
     * @since 2019/11/22
     **/
    @Deprecated
    BrandFactorDRO findByProductId(Integer brandId, Integer showProductId, Integer type);

    /**
     * 描述: 获取品牌系数
     *
     * @param brandId
     *            品牌id
     * @param showProductId
     *            产品id
     * @param type
     *            1.保外，2.保内，4.计价器3.0
     * @param priceType
     *            1.销售价，2.内部价
     * @return
     * @author tanbiao
     * @since 2019/11/22
     **/
    BrandFactorDRO getByBrandIdAndProductIdAndBizTypeAndPriceType(Integer brandId, Integer showProductId, Integer type, Integer priceType);

    /**
     * 描述：添加/修改品牌系数
     *
     * @param mcStaffName
     * @param brandRatioVo
     * @return
     */
    Integer addEditBrandRatio(String mcStaffName, @RequestBody BrandRatioVo brandRatioVo) throws PlatException;

    /**
     * 添加或修改品牌分类系数
     *
     * @param mcStaffName
     * @param brandRatioModifyVo
     * @return
     */
    void addEditCategoryRatio(String mcStaffName, @RequestBody BrandRatioModifyVo brandRatioModifyVo) throws PlatException;

    /**
     * 描述：获取品牌分类系数
     *
     * @param brandId
     *            品牌ID
     * @param priceType
     *            价格类型
     * @param servCategId
     *            服务分类ID
     * @param bizType
     *            1.保外，2.保内，3.工程
     * @param brandName
     *            品牌名字
     * @return
     */
    BrandFactorCategoryRatioVo findByBrandIdAndServCategId(int brandId, int priceType, int servCategId, int bizType, String brandName);

    /**
     * 描述：获取品牌一级分类下所有二级分类系数
     *
     * @param query
     * @return
     */
    List<BrandRatioVo> listBrandLevelTwoRatioVo(BrandRatioQuery query);
}
